package com.pqy.ts.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.pqy.ts.entity.TLike;
import com.pqy.ts.entity.vo.CommentVo;
import com.pqy.ts.mapper.TLikeMapper;
import com.pqy.ts.service.TLikeService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author panqiyi
 * @since 2022-06-09
 */
@Service
public class TLikeServiceImpl extends ServiceImpl<TLikeMapper, TLike> implements TLikeService {
    @Override
    public List<CommentVo> getLikeCount(List<CommentVo> com,String userId) {

        for (CommentVo commentVo : com) { // 传入的 已是该页的评论数据集合
            //设置顶级评论 点赞数
            String id = commentVo.getId();
            QueryWrapper<TLike> wrapper = new QueryWrapper<>();
            wrapper.eq("comment_id",id);
            Integer count = baseMapper.selectCount(wrapper);
            commentVo.setLike(count); // 设置顶级评论的点赞数

            // 根据登录用户id，找到该用户点赞过的评论集合，设置点赞图标颜色状态 likeFlag=true
            QueryWrapper<TLike> wrapper2 = new QueryWrapper<>();
            wrapper2.eq("user_id",userId);
            List<TLike> tLikes1 = baseMapper.selectList(wrapper2);
            if (tLikes1.size()>0){ // 该用户有对评论点赞过
                for (TLike tLike : tLikes1) {
                    String commentId = tLike.getCommentId(); // 点赞的评论id
                    if (commentVo.getId().equals(commentId)){ // 如果顶级评论id如果与点赞过的id一样
                        commentVo.setLikeFlag(true); // 设置点赞图标状态likeFlag=true
                    }

                }
            }

            // 设置子级评论(已经弄成了子子孙孙级)点赞数
            List<CommentVo> replys = commentVo.getReply();
            for (CommentVo reply : replys) {
                String replyId = reply.getId();
                QueryWrapper<TLike> wrapper1 = new QueryWrapper<>();
                wrapper1.eq("comment_id",replyId);
                Integer count1 = baseMapper.selectCount(wrapper1);
                reply.setLike(count1); // 设置 子级评论(子子孙孙) 点赞数

                // 设置点赞图标颜色状态
                QueryWrapper<TLike> wrapper3 = new QueryWrapper<>();
                wrapper3.eq("user_id",userId);
                List<TLike> tLikes2 = baseMapper.selectList(wrapper2);
                if (tLikes2.size()>0){ // 该用户有对评论点赞过
                    for (TLike tLike : tLikes1) {
                        String commentId = tLike.getCommentId(); // 点赞的评论id
                        if (reply.getId().equals(commentId)){ // 如果回复评论id如果与点赞过的id一样
                            reply.setLikeFlag(true); // 设置点赞图标状态likeFlag=true
                        }

                    }
                }

            }
        }
        return com;
    }
}
